package packAutomatricula;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

import javax.swing.JDialog;

import net.sf.jga.algorithms.Summarize;

public class Alumno {
	//Attributes
	private String dni;
	private String apellido;
	private String nombre;
	private int curso;
	private int numCreditos;
	private String contrasena;
	private boolean estaMatriculado;
	private ListaNombresAsignatura listaAsignaturasActual;
	private Expediente expediente;

	//Constructor
	public Alumno(String nombre, String apellido, String dni, int curso,
			int numCreditos, String contrasena,
			ListaNombresAsignatura listaAsignaturasActual, Expediente pExpediente) {
		this.nombre = nombre;
		this.apellido = apellido;
		this.dni = dni;
		this.curso = curso;
		this.numCreditos = numCreditos;
		this.contrasena = contrasena;
		this.listaAsignaturasActual = listaAsignaturasActual;
		this.expediente = pExpediente;
	}

	//Methods
	public boolean isEstaMatriculado() {
		return estaMatriculado;
	}

	public void setEstaMatriculado(boolean estaMatriculado) {
		this.estaMatriculado = estaMatriculado;
	}
	
	public boolean verificarContrasena(String pContrasena){
		boolean esCorrecta = false;
		if (this.getContrasena().equals(pContrasena)){
			esCorrecta = true;
		}
		return esCorrecta;
	}

	private String getContrasena() {
		return contrasena;
	}

	public String getDni() {
		return dni;
	}

	public void matricularAlumno(){
		//int creditos = 0;
		ListaNombresAsignatura listaAux = new ListaNombresAsignatura();

		if(this.getCurso() == 0){
			this.setListaAsignaturasActual(ListaCursos.getListaCursos().seleccionarAsignaturaMismoCurso(getCurso()+1));
			
			//this.expediente.anadirAsignaturasExpediente(listaAsignaturasActual);
		}
		
		else
		{
			this.setListaAsignaturasActual(this.expediente.matricularPendientes()); //nos devuelve las asig suspendidas
			listaAux = ListaCursos.getListaCursos().seleccionarAsignaturaMismoCurso(getCurso()+1);
			listaAux.anadirUnaListaAotra(getListaAsignaturasActual());
			
			//creditos = 90 - this.calcularCred();
			//if (creditos >= 0){
			//	this.expediente.anadirAsignaturasExpediente(listaAsignaturasActual);
			}
		
		this.setNumCreditos(this.calcularCred());
		}
	//}


	public Expediente getExpediente() {
		return expediente;
	}

	private void setListaAsignaturasActual(ListaNombresAsignatura lista) {
		this.listaAsignaturasActual = lista;
	}
	
	public void setExpediente(Expediente exp) {
		this.expediente = exp;
	}

	private void setNumCreditos(int numCreditos) {
		this.numCreditos = numCreditos;
	}

	/*private Expediente getExpediente() {
		return expediente;
	}*/


	public int getCurso() {
		return this.curso;
	}

	public ListaNombresAsignatura getListaAsignaturasActual() {
		return listaAsignaturasActual;
	}

	/*public Iterable<String> calcularCredResto(){
		int cont = Summarize.accumulate(listaAsignaturasActual, new CondicionAsignaturas());

	}*/
	private int calcularCred(){
		Iterator<String> itr = this.listaAsignaturasActual.getIterador();
		String asig = null;
		Asignatura a = null;
		int cont = 0;
		while (itr.hasNext()){
			asig = (String) itr.next();
			a = ListaAsignaturas.getMiListaAsignaturas().buscarAsignaturaPorId(asig);
			cont = cont + a.getNumCreditos();
		}
		return cont;
	}

}

